package proxy

type Subject interface {
	Do() string
}

type RealSubject struct {
}

func (r *RealSubject) Do() string {
	return "real subject do()"
}

type SubjectProxy struct {
	subject *RealSubject
}

func (s *SubjectProxy) Do() string {
	var res string
	res += "before:"
	res += s.subject.Do()
	res += ":after"
	return res
}
